from datetime import datetime
from extensions import db
import sqlalchemy as sa

"""
一篇文章对应多条评论
文章与评论之间是 --->  一对多 关系
评论表应该有一个
每一个评论应该对应一个文章id，
"""


class CommentORM(db.Model):
    """评论"""
    __tablename__ = "forum_comment"

    id = sa.Column(sa.Integer, primary_key=True)  # 评论编号
    content = sa.Column(sa.Text, nullable=False)  # 评论内容
    parent_id = sa.Column(sa.Integer, sa.ForeignKey("forum_comment.id"))  # 父评论id
    like_count = sa.Column(sa.Integer, default=0)  # 点赞条数
    user_id = sa.Column(sa.Integer, sa.ForeignKey("forum_user.id"), nullable=False)  # 用户id
    article_id = sa.Column(sa.Integer, sa.ForeignKey("forum_article.id"), nullable=False)  # 新闻id

    create_at = sa.Column(sa.DateTime, default=datetime.now)  # 记录的创建时间
    update_at = sa.Column(sa.DateTime, default=datetime.now, onupdate=datetime.now)  # 记录的更新时间

    parent = db.relationship("CommentORM", remote_side=[id])  # 自关联
    # 当前评论有多少人点赞
    comment_like_list = db.relationship('CommentLikeORM', backref='comment', lazy='dynamic')

    # article_list = db.relationship('ArticleORM', lazy='dynamic')

    def save(self):
        db.session.add(self)
        db.session.commit()

    def delete(self):
        db.session.delete(self)
        db.session.commit()


class CommentLikeORM(db.Model):
    """评论点赞"""
    __tablename__ = "forum_comment_like"

    comment_id = db.Column("comment_id", db.Integer, db.ForeignKey("forum_comment.id"), primary_key=True)  # 评论编号
    user_id = db.Column("user_id", db.Integer, db.ForeignKey("forum_user.id"), primary_key=True)  # 用户编号

    create_at = db.Column(db.DateTime, default=datetime.now)  # 记录的创建时间
    update_at = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now)  # 记录的更新时间